Present embodiments relate to the field of persistent messaging.
In publish/subscribe and message queuing systems, multiple clients are connected to a server (sometimes referred to as broker or a queue manager) and use it to exchange messages between them. Many providers of publish/subscribe and queuing messaging services implement a message persistence mechanism that ensures messages can survive server restart. Message persistence is required in order to provide services such as durable subscription, assured message delivery and transactional messaging. In many cases, messages are persisted to a hard disk device (HDD) or to a database. Since an incoming message must commonly be persisted before it can be fully processed and delivered, the persistence stage is often the performance bottleneck in the server and thus the whole publish/subscribe system.
A single node server provides fault tolerance due to its ability to restore its former state, from non-volatile memory, after a failure at any given time without data loss. In many cases, however, it is also required that the server be highly available. In order to provide High Availability (HA), two or more nodes, each running an instance of the server, may be used.
The foregoing examples of the related art and limitations related therewith are intended to be illustrative and not exclusive. Other limitations of the related art will become apparent to those of skill in the art upon a reading of the specification and a study of the figures.